package com.hrt.iceberg

import org.apache.spark.sql.SparkSession

/**
  * SparkSQL 操作Iceberg DDL 之隐藏分区之
  *  create table .... as select
  *  replace table .... as select
  *  drop table ...
  *
  */
object SparkOperatorIcebrgDDL2 {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession.builder().master("local").appName("SparkOperateIceberg")
      //指定hadoop catalog，catalog名称为hadoop_prod
      .config("spark.sql.catalog.hadoop_prod", "org.apache.iceberg.spark.SparkCatalog")
      .config("spark.sql.catalog.hadoop_prod.type", "hadoop")
      .config("spark.sql.catalog.hadoop_prod.warehouse", "hdfs://mycluster/sparkoperateiceberg")
      .getOrCreate()

//    //创建普通表
//    spark.sql(
//      """
//        | create table hadoop_prod.default.mytbl(id int,name string,age int) using iceberg
//      """.stripMargin)
//
//    //向表中插入数据
//    spark.sql(
//      """
//        |insert into table hadoop_prod.default.mytbl values (1,"zs",18),(3,"ww",20),(2,"ls",19),(4,"ml",21)
//      """.stripMargin)
//
//    //查询数据
//    spark.sql("select * from hadoop_prod.default.mytbl").show()

//    spark.sql(
//      """
//        |create table hadoop_prod.default.mytbl2 using iceberg as select id,name,age from hadoop_prod.default.mytbl
//      """.stripMargin)
//    spark.sql(
//      """
//        |select * from hadoop_prod.default.mytbl2
//      """.stripMargin).show()
//

//    spark.sql(
//      """
//        |create table hadoop_prod.default.mytbl3 (id int,name string,loc string,score int) using iceberg
//      """.stripMargin)
//    spark.sql(
//      """
//        |insert into table hadoop_prod.default.mytbl3 values (1,"zs","beijing",100),(2,"ls","shanghai",200)
//      """.stripMargin)
//    spark.sql(
//      """
//        |select * from hadoop_prod.default.mytbl3
//      """.stripMargin).show
//
//    spark.sql(
//      """
//        |replace table hadoop_prod.default.mytbl2 using iceberg as select * from hadoop_prod.default.mytbl3
//      """.stripMargin)
//
//    spark.sql(
//      """
//        |select * from hadoop_prod.default.mytbl2
//      """.stripMargin).show()


    //删除表
//    spark.sql(
//      """
//        |drop table hadoop_prod.default.mytbl
//      """.stripMargin)


    //1.创建表test，并插入数据
//    spark.sql(
//      """
//        |create table hadoop_prod.default.test(id int,name string,age int) using iceberg
//      """.stripMargin)
//    spark.sql(
//      """
//        |insert into table hadoop_prod.default.test values (1,"zs",18),(2,"ls",19),(3,"ww",20)
//      """.stripMargin)



     //2.添加字段,给 test表增加 gender 列、loc列
//    spark.sql(
//      """
//        |alter table hadoop_prod.default.test add column gender string,loc string
//      """.stripMargin)

    //3.删除字段，给test 表删除age 列
//    spark.sql(
//      """
//        |alter table hadoop_prod.default.test drop column age
//      """.stripMargin)

    //4.查看表test数据
//    spark.sql(
//      """
//        |select * from hadoop_prod.default.test
//      """.stripMargin).show()

    //5.重命名列
    spark.sql(
      """
        |alter table hadoop_prod.default.test rename column gender to xxx
        |
      """.stripMargin)
    spark.sql(
      """
        |select * from hadoop_prod.default.test
      """.stripMargin).show()

  }

}
